# 2025.02.10力扣网刷题
# 键盘行——哈希表、字符串、数组——简单
# 给你一个字符串数组 words ，只返回可以使用在 美式键盘 同一行的字母打印出来的单词。键盘如下图所示。
# 请注意，字符串 不区分大小写，相同字母的大小写形式都被视为在同一行。
# 美式键盘 中：
# 第一行由字符 "qwertyuiop" 组成。
# 第二行由字符 "asdfghjkl" 组成。
# 第三行由字符 "zxcvbnm" 组成。
# American keyboard
# 示例 1：
# 输入：words = ["Hello", "Alaska", "Dad", "Peace"]
# 输出：["Alaska", "Dad"]
# 解释：
# 由于不区分大小写，"a" 和 "A" 都在美式键盘的第二行。
# 示例 2：
# 输入：words = ["omk"]
# 输出：[]
# 示例 3：
# 输入：words = ["adsdf", "sfd"]
# 输出：["adsdf", "sfd"]
# 提示：
# 1 <= words.length <= 20
# 1 <= words[i].length <= 100
# words[i] 由英文字母（小写和大写字母）组成

class Solution(object):
    def findWords(self, words):
        """
        :type words: List[str]
        :rtype: List[str]
        """
        first = "qwertyuiop"
        second = "asdfghjkl"
        third = "zxcvbnm"
        ans = []
        length = len(words)
        for i in range(length):
            tmp = words[i].lower()
            ch = tmp[0]
            flag = 1
            if ch in first:
                for ch in tmp:
                    if ch not in first:
                        flag = 0
                        break
            elif ch in second:
                for ch in tmp:
                    if ch not in second:
                        flag = 0
                        break
            elif ch in third:
                for ch in tmp:
                    if ch not in third:
                        flag = 0
                        break
            if flag:
                ans.append(words[i])
        return ans